import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
const whiteList = ['/login', '/404']

router.beforeEach(async(to, from, next) => {
  NProgress.start()
  const token = store.state.user.token
  if (token) {
    // 因为 在navBar中调用vuex 中获取用户信息 会出现头像的抖动 因为刚开始是默认头像
    // 请求回来再设置头像 所以再导航守卫中 是最先设置数据
    // 侧边栏也要用用户权限信息 所以不能直接在nav组件中调用
    if (!store.state.user.userInfo.userId) {
      await store.dispatch('user/getUserInfos') // 成功才执行以下代码 且不是每次请求都走这里
    }
    // 有token
    if (to.path === '/login') {
      // 如果有token 再去登录页 直接到跳转到 首页 /
      next('/')
      NProgress.done()
    } else {
      next()
    }
  } else {
    // 没token  判断是不是 白名单的地址 如果是就允许
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
      NProgress.done()
    }
  }
})
router.afterEach(() => {
  NProgress.done()
})
